<!DOCTYPE html>
<html lang="zh_CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script type="text/javascript">

    /**
     * 函数声明，或者叫做函数的定义
     * 声明只需要一次，调用可以多次，体现函数的复用性
     * @param a
     * @param b
     * @returns {*}
     */
    /* function sum(a, b) {
         return a + b;
     }

     console.log(sum(1, 23));
     console.log(sum(12, 23));
     console.log(sum(134, 23));
     console.log(sum(10, 23));*/

    var a = 12;
    var str = 'abc';

    function f1() {


    }

    console.log(typeof a);
    console.log(typeof str);
    console.log(typeof f1); // function

    console.log('========');

    /*
    * 在js 里面函数也是一种数据类型，也是可以被用来赋值的、
    * */
    // var add;

    /*如果把一个函数赋值给一个变量，后面的函数叫做函数表达式。赋值后，我们以后就可以通过该变量来调用该函数 直接在声明变量的时候，直接赋值*/
    var add = function sum(a, b) {
        return a + b;
    }

    console.log(add); // 直接打印变量，函数表达式打印出来
    console.log(typeof add);
    console.log(add(12, 23));

    /*如果把一个函数表达式赋值给一个变量后，则以后就不能继续通过该函数名调用该函数了。只能通过赋值的变量调用。*/
    // Uncaught ReferenceError: sum is not defined
    console.log('原函数名称调用', sum(12, 23));


</script>

</html>
